package visao;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.text.MaskFormatter;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JButton;

import modelo.Musico;
import controle.ControleMusico;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.text.ParseException;

import javax.swing.JRadioButton;
import javax.swing.JFormattedTextField;
import javax.swing.JComboBox;
import java.util.*;
import javax.swing.JSpinner;

public class TelaMusico extends JFrame {

	private JPanel contentPane;
	private JTextField txtNome;
	private JTextField txtInstrumento;
	private Musico musico = new Musico();
	private ControleMusico controleMusico;
	private JRadioButton rdbtnNao;
	private JRadioButton rdbtnSim;
	private boolean ehSolo; 
	private JFormattedTextField txtEscalaVoz;
	private JComboBox cboxMusico;
	private JButton btnEditar;
	private JButton btnVisualizar;
	private JButton btnSalvar;
	private JButton btnDeletar;
	

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					TelaMusico frame = new TelaMusico();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public TelaMusico() {
	
		controleMusico = new ControleMusico();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblMusico = new JLabel("Musico");
		lblMusico.setFont(new Font("Times New Roman", Font.BOLD, 20));
		lblMusico.setBounds(166, 11, 60, 24);
		contentPane.add(lblMusico);
		
		JLabel lblNome = new JLabel("Nome:");
		lblNome.setBounds(35, 57, 46, 14);
		contentPane.add(lblNome);
		
		JLabel lblEhsolo = new JLabel("EhSolo:");
		lblEhsolo.setBounds(35, 91, 46, 14);
		contentPane.add(lblEhsolo);
		
		JLabel lblEscalavoz = new JLabel("Escala de Voz:");
		lblEscalavoz.setBounds(35, 119, 94, 14);
		contentPane.add(lblEscalavoz);
		
		JLabel lblInstrumento = new JLabel("Instrumento:");
		lblInstrumento.setBounds(35, 158, 63, 14);
		contentPane.add(lblInstrumento);
		
		txtInstrumento = new JTextField();
		txtInstrumento.setColumns(10);
		txtInstrumento.setBounds(126, 155, 112, 20);
		contentPane.add(txtInstrumento);
		
		txtNome = new JTextField();
		txtNome.setColumns(10);
		txtNome.setBounds(126, 54, 112, 20);
		contentPane.add(txtNome);
		
		btnSalvar = new JButton("Salvar");
		btnSalvar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				musico.setEhSolo(ehSolo);
				musico.setEscalaVoz(Integer.valueOf(txtEscalaVoz.getText()));
				musico.setInstrumento(txtInstrumento.getText());
				musico.setNome(txtNome.getText());
				
				try {
					controleMusico.Salvar(musico);
					JOptionPane.showMessageDialog(null, "Seu Musico foi salvo com sucesso");
				} catch (Exception e) {
					JOptionPane.showMessageDialog(null, e.getMessage());
					e.printStackTrace();
				}
				rdbtnNao.setSelected(false);
				rdbtnSim.setSelected(false);
				txtEscalaVoz.setText(null);
				txtInstrumento.setText(null);
				txtNome.setText(null);
			}
		});
		btnSalvar.setBounds(320, 53, 91, 23);
		contentPane.add(btnSalvar);
		
		btnDeletar = new JButton("Deletar");
		btnDeletar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				controleMusico.Excluir(musico);
				JOptionPane.showMessageDialog(null, "Seu Musico foi deletado com sucesso");
			}
		});
		btnDeletar.setBounds(320, 87, 91, 23);
		contentPane.add(btnDeletar);
		
		btnVisualizar = new JButton("Visualizar");
		btnVisualizar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			
				
				if (cboxMusico.getItemCount() > 0) {
					musico = (Musico) cboxMusico.getSelectedItem();

					txtNome.setText(musico.getNome());
					
					txtEscalaVoz.setText(String.valueOf(musico.getEscalaVoz()));
					txtInstrumento.setText(musico.getInstrumento());
					
					
					if (musico.isEhSolo()) {
						rdbtnSim.setSelected(true);
						rdbtnNao.setSelected(false);
						ehSolo = musico.isEhSolo();
					} else {
						rdbtnNao.setSelected(true);
						rdbtnSim.setSelected(false);
						ehSolo = musico.isEhSolo();
					}

					
				} else {
					JOptionPane.showMessageDialog(null,
							"Nenhum funcionario para editar");
				}
			}
		});
		btnVisualizar.setBounds(320, 127, 91, 23);
		contentPane.add(btnVisualizar);
		
		rdbtnSim = new JRadioButton("Sim");
		rdbtnSim.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if(rdbtnSim.isSelected()){
					rdbtnNao.setSelected(false);
					ehSolo = true;
				}
				
			}
		});
		rdbtnSim.setBounds(114, 87, 54, 23);
		contentPane.add(rdbtnSim);
		
		rdbtnNao = new JRadioButton("N\u00E3o");
		rdbtnNao.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(rdbtnNao.isSelected()){
					rdbtnSim.setSelected(false);
					ehSolo = false;
				}
			}
		});
		rdbtnNao.setBounds(187, 87, 63, 23);
		contentPane.add(rdbtnNao);
		
		cboxMusico = new JComboBox();
		for (Musico m : controleMusico.carregarMusicos()) {
			cboxMusico.addItem(m);
		}
		cboxMusico.setBounds(126, 208, 285, 22);
		contentPane.add(cboxMusico);
		
		List<Musico> musicos = controleMusico.carregarMusicos();
		for (Musico m : musicos) {
			cboxMusico.addItem(m);
		}
		
		JLabel lblMusico_1 = new JLabel("Musico: ");
		lblMusico_1.setBounds(35, 212, 46, 14);
		contentPane.add(lblMusico_1);
		try {
			txtEscalaVoz = new JFormattedTextField(new MaskFormatter("##"));
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		txtEscalaVoz.setBounds(126, 116, 112, 17);
		contentPane.add(txtEscalaVoz);
		
		btnEditar = new JButton("Editar");
		btnEditar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				musico.setEhSolo(ehSolo);
				musico.setEscalaVoz(Integer.valueOf(txtEscalaVoz.getText()));
				musico.setInstrumento(txtInstrumento.getText());
				musico.setNome(txtNome.getText());
				
				try {
					controleMusico.Alterar(musico);
					JOptionPane.showMessageDialog(null, "Seu Musico foi alterado com sucesso");
				} catch (Exception e) {
					JOptionPane.showMessageDialog(null, e.getMessage());
					e.printStackTrace();
				}
				rdbtnNao.setSelected(false);
				rdbtnSim.setSelected(false);
				txtEscalaVoz.setText(null);
				txtInstrumento.setText(null);
				txtNome.setText(null);
				
				
			}
		});
		btnEditar.setBounds(320, 161, 91, 23);
		contentPane.add(btnEditar);
		
	}
}
